package com.foreveross.bsl.common.utils.balance;

import java.io.Serializable;
import java.util.Map;

import org.apache.zookeeper.CreateMode;

/**
 * 服务、注册接口
 * 
 * @author hyw
 * 
 */
public interface ServiceKeeper extends Serializable {

	/**
	 * 获得当前服务父路径下的注册信息
	 * 
	 * @param serviceParentPath
	 *            服务父路径，如/avalid-service
	 * @return 服务注册信息 <path, data>
	 */
	public Map<String, String> getServiceMap(String serviceParentPath);

	/**
     * 获取指定PATH路径下的值
     * @param path
     * @return
     */
    public String getData(String path);
	
	/**
     * 获取服务父路径下指定ip的关联数据
     *
     * @param serviceParentPath
     *            服务父路径，如/avalid-service
     * @param ip
     *            指定的ip
     * @return
     */
    public String getData(String serviceParentPath, String ip);

    /**
     * 在服务父路径下注册新服务以及关联数据
     *
     * @param serviceParentPath
     *            服务父路径，如/avalid-service
     * @param ip
     *            指定的ip
     * @param data
     *            指定ip关联的数据
     */
    public void register(String serviceParentPath, String ip, String data, CreateMode createMode);

    /**
     * 指定PATH下的值
     *
     * @param path
     *
     * @param data
     *            指定ip关联的数据
     */
    public void register(String path, String data, CreateMode createMode);

	/**
	 * 监听服务父路径下注册服务的状态：
	 * 
	 * @param serviceParentPath
	 *            服务父路径，如/avalid-service
	 * @param listener
	 *            监听器
	 */
	public void listen(String serviceParentPath, ServiceListener listener);
	
	///**
	// * 监听服务父路径下注册服务的状态
	// *
	// * @param pathListerMap
	// * key=监听的path value=对应的监听器
	// */
	public void listen(Map<String, ServiceListener> pathListerMap);

}
